home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FM Towns: Free Software Collection 4
/
FM Towns Free Software Collection 4 - Disc 2.iso
/
strip
/
strip.doc
next >
Wrap
Text File
|
1991-10-19
|
6KB
|
137 lines
STRIP by elfin
~~~~~~~~~~~~~~ (C) 1991 elfin
1. STRIPとは
~~~~~~~~~~~~
strip: はぐ, むく; 裸にする; 取り去る; (New Concise English Dictionary)
ということで, 余計なものを剥ぎ取って裸にするのが, このプログラムです。
何から余計なものを剥ぎ取るかと言うと, EXP形式の実行ファイルからです。
と言うことで, 残念ながら, 御期待のアダルト・ソフトではありません :-)。
EXP形式のファイルには, 大きく言って, 3つの無駄があります。
その第一は,シンボル・テーブルです。これは, 386debugで使用するデバグ用の情報
ですから通常の実行には不要です。しかし,T-OSの中の多くのソフトやフリー
ウェアにもこれが残っています。(まさか,バグのようだったら, これを使って
デバグして報告しろと言うわけでは無いでしょうが。オイオイ)
第二は, 386linkや tlinkの問題ですが,スタティック変数領域を実行ファイルに
確保してしまいます。その為, 大きな変数領域をとると, 実行ファイルのサイズ
が膨大になります。 (gnuの ldの方は, そんなことはしませんから, 大丈夫です。)
この領域は, 大体 0が詰まっているだけですから無駄です。386linkでも, -pack
と言うオプションがあって, これを使うと 0が何個連続というように表現するので
実行ファイルのサイズを小さくすることができます。
この -packオプションはリンク時に指定するので,ユーザが後で変更することは
出来ないのですが,STRIPは, 実行形式になったものを疑似PACK形式化します。
富士通純正のソフトは, 大抵PACKされていませんから, 効果が期待できます。
一方, TOWNSの主要なフリーウェアは, 元々 PACKされているものが多いので,
その場合は, 効果はありません。
第三の無駄は, ヘッダです。実行ファイルは, 通常, 512バイトのヘッダをもって
います。しかし,実際に有効な情報の詰まっている部分は, 半分以下なので,これも
不要な部分を剥ぎ取ります。run386は, ヘッダのサイズがどれだけかを読み取って
実行ファイルを起動しますから, 通常は問題ないのですが,今の run386は,
CD-ROMから起動する場合は, 512バイト決め打ちで起動するようで, ヘッダを縮小
すると起動できません。フリコレ等に投稿する場合は, 注意下さい。
(三国誌-2に入っている RUN386は, 小さいヘッダでも正常に起動します???)
2. STRIPの効果
~~~~~~~~~~~~~~
効果の一例として, TMENU.EXPを処理した例を示します。
-a--rw- 244391 Oct 8 1990 16:36 k:/tmenu.e$p T-OS L30 オリジナル
-a--rw- 184799 Jul 14 1991 10:51 k:/tmenu.exp STRIP処理したもの
オリジナルから, 60KB弱減少していることが分かります。
実は, LZEXPという EXPファイルをスライド辞書圧縮するプログラムがあって,
STRIPの結果を圧縮すると, 以下のようになります。
-a--rw- 105037 Jul 13 1991 23:43 k:/tmenu.$xp 更に LZEXPしたもの
こちらの方は, 雑誌に投稿することにしてしまったので,掲載されるか没になる
まで発表できません。暫く, お待ち下さい。
3. 無保証
~~~~~~~~~
このプログラムについて, 正常に動作するか役に立つかなどについて,作者は,
一切保証しませんし,使用した結果起きた如何なる損失についても, 補償の義務
を負いません。
一応の動作チェックはしていますが,バグのため,処理ファイルが動作せず,
かつ,オリジナルも上書きされて消えてしまったと言う事故も充分想定されます。
オリジナルのバックアップは, 残しておくようにしましょう。
4. STRIPの利用について
~~~~~~~~~~~~~~~~~~~~~~
STRIPの著作権は, elfin(安藤 寿茂)に帰属しますが,個人使用, 業務上の使用を
問わず一切の使用は, 自由に行っていただいて結構です。そして,処理結果には,
私の著作権の及ぶものは含まれませんので, 処理前のプログラムの著作権者の
定める制限だけを遵守していただけば結構です。
また,コピーを再配付することも認めますが, 内容を改変しないこと,この
ドキュメントを含んで配付すること,配付に当たって実費以上の料金を徴収しない
ことを守って下さい。
5. 使い方
~~~~~~~~~
このプログラムは, コンソールから使うように設計されています。T-OSの場合は,
CRICON, ERICON, ORICONなどから起動して下さい。また,MS-DOSからも使用でき
ます。 また,run386は, カレントディレクトリにあるもの以外は, フルパス名で
指定しないと起動しませんから, strip.expのあるディレクトリで実行するか,
フルパス名(B:\EXP\STRIP のように)で指定して下さい。
A> run386 strip -[hpndr] file_spec[.exp]
h: cut header size, p: pack, n: not delete original,
d: in the same directory, r: cursively into sub-directory
(1) PACK化(-p)が指定されると, PACKを試みる。 PACK化の効果が無い(5%以下の
縮小)場合は, 処理をしない。
(2) シンボル・テーブルは, 無条件に剥ぎとる。また,ヘッダの切り詰め(-h)
オプションが指定されると, ヘッダの 0の部分を切り詰める。
(これは, CD-ROM化すると動作しない恐れがあるが, HD, FDは OK)
(3) 処理結果が, 常に, 入力ファイルを置き換える。-n オプションを指定
すると, 元のファイルを, filename.e$pと名前を替えて残す。
処理結果は, 通常, カレント・ディレクトリに作られる。-d オプションを
指定すると, 元のファイルと同じディレクトリに作られる。
(4) file_specには, DOSのワイルドカードが使用できる。また,file_specに
ディレクトリ名を指定すると, そのディレクトリ内部の全部のファイルが
対象となる。ディレクトリ名(カレント・ディレクトリを意味する . も可)
を指定し,(-r)オプションを指定すると, サブ・ディレクトリも対象に
なる。
ディレクトリの区切りは, DOS標準の \ でも良いが, / でも良い。自動発生
する方は, (個人的趣味で) / になるので, /の方が表示上, 統一性が良い。
(5) オプションは, -phndr のように, - に続けて複数指定して良い。
オプションや file_specは, 複数書いてもよい。 file_specの直前のオプション
に従って処理される。
使用例:
(1) カレントディレクトリの myprog.expをヘッダ切り詰め, PACK処理する。
run386 strip -hp myprog
(2) カレントディレクトリの全てのファイルを処理(上記と同じ hと pで)し,
元のファイルは拡張子を e$pにして残す。
run386 strip -hpn *
(3) CD-ROMの t_toolディレクトリの内容を全て処理し,カレントディレクトリに
処理結果を格納する。
run386 strip -hp q:t_tool
(4) E:ドライブに複写した T-OSの全ての EXPファイルを処理する。
run386 strip -hpdr e:/
以上